package com.xc.disk.service;

import com.xc.disk.bean.DrawCodeBean;
import com.xc.disk.dto.DrawCodeDto;
import com.xc.disk.info.TokenInfo;
import com.xc.disk.bean.ShareBean;
import com.xc.disk.dto.FolderDto;
import com.xc.disk.entity.ShareEntity;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/**
 * <p>项目名称: Stars</p>
 * <p>描述: 共享文件接口</p>
 * <P>创建人:小程 </p>
 * <P>创建人邮箱: 779943476@qq.com</p>
 * <p>创建时间: 2019/11/25</p>
 *
 * @version v1.0
 */
public interface ShareService {

    /**
     * 创建共享文件
     *
     * @param token     用户token
     * @param shareBean 共享参数bean
     * @return 创建成功的信息
     */
    public ShareEntity createShare(TokenInfo token, ShareBean shareBean);


    /**
     * 获取用户的共享文件
     *
     * @param token 用户token
     * @return 用户的共享文件
     */
    public List<ShareEntity> getShareFileListByUserId(TokenInfo token);

    /**
     * 删除共享文件
     *
     * @param token 用户token
     * @param ids   临时文件id集合
     */
    public void deleteShareFile(TokenInfo token, List<String> ids);

    /**
     * 验证共享文件是否需要提取码
     *
     * @param code 共享文件代码
     * @return 不需要提取码返回共享id
     */
    public DrawCodeDto inspectDrawCode(String code);

    /**
     * 验证提取码
     *
     * @param drawCodeBean 共享文件参数
     * @return 提取码正确，返回共享id
     */
    public DrawCodeDto verifyDrawCode(DrawCodeBean drawCodeBean);

    /**
     * 查询共享文件
     *
     * @param fid      共享出去的code
     * @param parentId 父级id
     * @return 共享文件信息
     */
    public FolderDto getShareFile(String fid, String parentId);

    /**
     * 下载共享文件
     *
     * @param fid     文件id
     * @param shareId 共享id
     * @return 下载地址
     */
    public String downloadShareFile(String shareId, String fid);


    /**
     * 保存共享文件
     *
     * @param token    用户token
     * @param shareId  共享文件id
     * @param folderId 目录id
     */
    public void saveShare(TokenInfo token, String shareId, String folderId);

}
